import axios from 'axios'
// 基准路径
const baseURL = process.env.VUE_APP_BASE_API
// 创建实例
const instance = axios.create({
  baseURL: baseURL
})
// 响应拦截器
instance.interceptors.response.use(res => {
  // 对响应数据做点什么
  return res.data
}, (err) => {
  // 对响应错误做点什么
  return Promise.reject(err)
})

// 封装通用的接口函数调用函数
// 按照这种方式封装是无论是何种请求方式,参数用data传递
export default (option) => {
  let key = null
  if (option.method) {
    key = option.method.toUpperCase() === 'GET' ? 'params' : 'data'
  } else {
    // 如果没传递method,默认采用get
    key = 'params'
  }
  return instance({
    // 短路运算
    method: option.method || 'get',
    url: option.url,
    // data用于传递get之外的所有请求方式的数据:post/put/delete
    // params仅仅处理get请求参数
    // data: option.data,
    // params: option.params,
    // Es6规则:对象是key可以是动态变量  toUpperCase 不区分请求方式大小写
    [key]: option.data
  })
}
